<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>242. 有效的字母异位词</title>
</head>
<body>
    <script>
    //         给定两个字符串 s 和 t ，编写一个函数来判断 t 是否是 s 的字母异位词。

    // 注意：若 s 和 t 中每个字符出现的次数都相同，则称 s 和 t 互为字母异位词。

    

    // 示例 1:

    // 输入: s = "anagram", t = "nagaram"
    // 输出: true
    // 示例 2:

    // 输入: s = "rat", t = "car"
    // 输出: false
    

    // 提示:

    // 1 <= s.length, t.length <= 5 * 104
    // s 和 t 仅包含小写字母
    function isAnagram(s, t) {
        if (s.length !== t.length) {
            return false
        }

        const map = new Map()

        // 统计 s 中每个字符出现的次数
        for (let i = 0; i < s.length; i++) {
            const ch = s.charAt(i)
            const count = map.get(ch) || 0
            map.set(ch, count + 1)
        }

        // 遍历 t，减去每个字符的计数器值
        for (let i = 0; i < t.length; i++) {
            const ch = t.charAt(i)
            const count = map.get(ch) || 0
            if (count === 0) {
                return false
            }
            map.set(ch, count - 1)
        }

        return true
    }
    </script>
</body>
</html>